package main

import (
	"fmt"
)

/*
切片是 Go 中的一种基本的数据结构，使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来，为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时，切片还具有可索引，可迭代的优秀特性。
*/
/*
在 Go 中，与 C 数组变量隐式作为指针使用不同，Go 数组是值类型，赋值和函数传参操作都会复制整个数组数据。
*/
func main() {
    arrayA := [2]int{100, 200}
    var arrayB [2]int

    arrayB = arrayA

    fmt.Printf("arrayA : %p , %v\n", &arrayA, arrayA)
    fmt.Printf("arrayB : %p , %v\n", &arrayB, arrayB)

	testArray(arrayA)
    testArray2(&arrayA)
   
}
/**
Go 中数组赋值和函数传参都是值复制的
*/
func testArray(x [2]int) {
    fmt.Printf("func Array : %p , %v\n", &x, x)
}

func testArray2(x *[2]int) {
    fmt.Printf("func Array : %p , %v\n", x, *x)
}
